The present invention relates to integration of software, and in particular, to systems and methods for integrating heterogeneous software components.
The growth of computers and computer networks has resulted in a rapid increase in the number and types of available computer programs. Computer programs (i.e., software) perform a wide variety of functions and may be used in applications ranging from the management of large volumes of business data for large companies to providing a rich information environment for individual users over the Internet. With the wide availability of different programs offering different unique features and functions, programs are often designed to interface with other programs so that one or both programs can use the features of the other. Typically, a main program will be hand coded by a programmer, and the programmer will include procedure or function calls to another program to include some or all of the other programs functionality in the main program. However, this traditional technique of hand coding interfaces between programs is expensive and tedious, and typically requires the skills of a highly trained programming professional. Moreover, if the programs are implemented in different technologies, interfacing between the two programs can be a very complicated task. For example, communicating between different UI technologies (e.g. JavaScript, Java, .Net) is much more difficult that communicating between the same UI technology.
Recently, design programs have been created that provide for model driven application development. These programs are also referred to as “design tools.” FIG. 1A is an example of a design tool 101 that may be used to develop software applications. Design tool 101 allows a user to graphically compose applications by dragging different components (e.g., User Interface (UI) elements) onto a drawing pane and connecting them with backend functionality. The composed application may be stored as metadata in a repository 102. When an application is ready to be deployed, design tool 101 may read the metadata and automatically generate the program code for the application. The application may then be deployed across an enterprise for access by target users. This model driven approach allows for a rapid and error free software development and does not typically require advanced programming skills.
FIG. 1B shows an existing design tool and deployment environment. A design tool 110 such as NetWeaver™ Visual Composer from SAP® provides a model driven approach for the graphical composition of applications. Composer 110 includes a set of visualization controls, ranging from buttons to animated pie charts that may be specified as part of an application. The resulting applications may be deployed on an enterprise portal 120 that allows access by clients 130 running web browsers, for example. Applications developed according to known techniques may be used to access and process information from a variety of data sources 140 using connectivity software 150 (sometimes referred to as “middleware”) at runtime. Middleware layer 150 provides an integration platform and interface between applications and provides a runtime environment. Middleware layer 150 interoperates with applications created using design tool 110, which may include applications in .NET, J2EE, WebSphere, HTTP, XML, or Web services, for example. The design tool 110 compiler enables generation of application programs that can be deployed to the portal 120. Once deployed, the application programs created by design tool 110 can retrieve data from the portal 120 and connectivity framework 150 and display this information just like any other hand-coded portal pages.
FIG. 2 shows a graphical user interface of an existing design tool. Design tool 200 facilitates the creation of content for the Enterprise Portal 120 using a visual user interface rather than manually writing code. Design tool 200 provides sophisticated, yet simple-to-use tools for creating application programs (sometimes referred to as portlets or iViews) that communicate with other applications to move information from one program to another, combine data, and/or display data (e.g., to a page). An example design tool 200 may operate on top of the Enterprise Portal, utilizing the portal's connector-framework interfaces to allow users to access a range of internal and external databases or other data services.
Applications can be created using an easy drag-drop-connect paradigm. Users may select from a variety of components for specifying data sources (e.g., “Data Services”), operations, formulas, models, connectors, and views for defining an application. For example, as shown in FIG. 2, a user may specify a source 201 that outputs the top N sales by selecting and configuring a visual object representing a desired source. An output port on the source may be connected to an input port on a selected and configured view of the data 202. View 202 may display the data in a pie chart format, for example. The models are then compiled into executable code and deployed.
One problem with existing design tools, such as the one in the above example, is that the components available to a user in the design tool's palette are fixed. Typically, the only components available to a user of the design tool are components that have been specifically designed to work with the particular design tool (i.e., components created by the design tool provider). However, many users may find that the content of a design tool's control palette is too limited for the desired application. For example, application requirements may mandate specific functionality or data visualizations to better and more intuitively present information to the end-user. Customers requiring enhanced functionality generally must submit a development request to the design tool provider.
Accordingly, it would be advantageous if users of the design tool could integrate independently created components (i.e. custom components) into their applications. Unfortunately, custom components cannot communicate with the design tool because they do not share a common interface. Thus, it is not currently possible to incorporate custom components into the design tools palette of available components. Moreover, because third party components are programmed, in any of a variety of programming languages, interfacing these components with applications requires hand coding, which is time consuming and expensive.
Therefore, existing technology is limited since it only allows for composing applications where all components use the same technology. For example, it is not currently possible to compose application screens that consist of third-party developed custom components which are built with different technologies. The present invention solves these and other problems by providing systems and methods for integrating heterogeneous software components.